<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>
  <script>
    var xhr = null;
    try {
      xhr = new XMLHttpRequest()
    } catch (err) {
      xhr = new ActiveXObject("Microsoft.XML")
    }
    // 调用open
    // mock 数据只能get请求
    xhr.open("get", "./list.json", true);
    // 调用send()
    xhr.send();
    // 等待数据返回
    xhr.onreadystatechange = function () {
      if (xhr.readyState == 4 && xhr.status == 200) {
        console.log(xhr.responseText)
      }
      // xhr.readyState  请求状态
      // 0：请求未初始化，还没有调用 open() 。
      // 1：请求已经建立，但是还没有发送，还没有调用 send() 。
      // 2：请求已发送，正在处理中（通常现在可以从响应中获取内容头）。
      // 3：请求在处理中；通常响应中已有部分数据可用了，没有全部完成。
      // 4：响应已完成；您可以获取并使用服务器的响应了。
      // 服务器状态码
      // 1xx：表示临时响应并需要请求者继续执行操作的状态代码。初始化
      // 100（继续）：请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分，正在等待其余部分。
      // 101（切换协议）：请求者已要求服务器切换协议，服务器已确认并准备切换。
      // 二、2xx：表示成功处理了请求的状态代码。成功
      // 200（成功）：服务器已成功处理了请求。通常，这表示服务器提供了请求的网页。 **
      // 201（已创建）：请求成功并且服务器创建了新的资源。
      // 202（已接受）：服务器已接受请求，但尚未处理。
      // 203（非授权信息）：服务器已成功处理了请求，但返回的信息可能来自另一来源。
      // 204（无内容）：服务器成功处理了请求，但没有返回任何内容。
      // 205（重置内容）：服务器成功处理了请求，但没有返回任何内容。
      // 206 （部分内容）：服务器成功处理了部分 GET 请求。
      // 三 3xx：表示要完成请求，需要进一步操作。通常，这些状态代码用来重定向。(资源重定向)
      // 300（多种选择）：针对请求，服务器可执行多种操作。服务器可根据请求者(useragent)选择一项操作，或提供操作列表供请求者选择。
      // 301（永久移动）：请求的网页已永久移动到新位置。服务器返回此响应（对GET或HEAD请求的响应）时，会自动将请求者转到新位置。
      // 302（临时移动）：服务器目前从不同位置的网页响应请求，但请求者应继续使用原有位置来进行以后的请求。
      // 303（查看其他位置）：请求者应当对不同的位置使用单独的 GET 请求来检索响应时，服务器返回此代码。
      // 304（未修改）：自从上次请求后，请求的网页未修改过。服务器返回此响应时，不会返回网页内容。 **
      // 305（使用代理）：请求者只能使用代理访问请求的网页。如果服务器返回此响应，还表示请求者应使用代理。
      // 307（临时重定向）：服务器目前从不同位置的网页响应请求，但请求者应继续使用原有位置来进行以后的请求。
      // 四、4xx：这些状态代码表示请求可能出错，妨碍了服务器的处理。客户端错误
      // 400（错误请求）：服务器不理解请求的语法。
      // 401（未授权）：请求要求身份验证。对于需要登录的网页，服务器可能返回此响应。
      // 403（禁止）：服务器拒绝请求。
      // 404（未找到）：服务器找不到请求的网页。
      // 405（方法禁用）：禁用请求中指定的方法。
      // 406（不接受）：无法使用请求的内容特性响应请求的网页。
      // 407（需要代理授权）：此状态代码与 401（未授权）类似，但指定请求者应当授权使用代理。
      // 408（请求超时）：服务器等候请求时发生超时。
      // 409（冲突）：服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。
      // 410（已删除）：如果请求的资源已永久删除，服务器就会返回此响应。
      // 411（需要有效长度）：服务器不接受不含有效内容长度标头字段的请求。
      // 412（未满足前提条件）：服务器未满足请求者在请求中设置的其中一个前提条件。
      // 413（请求实体过大）：服务器无法处理请求，因为请求实体过大，超出服务器的处理能力。
      // 414（请求的 URI 过长）：请求的 URI（通常为网址）过长，服务器无法处理。
      // 415（不支持的媒体类型）：请求的格式不受请求页面的支持。
      // 416（请求范围不符合要求）：如果页面无法提供请求的范围，则服务器会返回此状态代码。
      // 417（未满足期望值）：服务器未满足"期望"请求标头字段的要求。
      // 五、5xx：这些状态代码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误，而不是请求出错。代码说明
      // 500（服务器内部错误）：服务器遇到错误，无法完成请求。 服务端的错误
      // 501（尚未实施）：服务器不具备完成请求的功能。例如，服务器无法识别请求方法时可能会返回此代码。
      // 502（错误网关）：服务器作为网关或代理，从上游服务器收到无效响应。
      // 503（服务不可用）：服务器目前无法使用（由于超载或停机维护）。通常，这只是暂时状态。
      // 504（网关超时）：服务器作为网关或代理，但是没有及时从上游服务器收到请求。
      // 505（HTTP 版本不受支持）：服务器不支持请求中所用的 HTTP 协议版本。
    }

    /*
    1xx表示客户端应该继续发送请求

      2xx表示成功的请求
      200表示OK，正常返回信息
      201表示请求成功且服务器创建了新的资源
      202表示服务器已经接受了请求，但还未处理

      3xx表示重定向

      301表示永久重定向，请求的网页已经永久移动到新位置
      302表示临时重定向
      304表示自从上一次请求以来，页面的内容没有改变过

      4xx表示客户端错误
      401表示服务器无法理解请求的格式
      402表示请求未授权
      403表示禁止访问
      404表示请求的资源不存在，一般是路径写错了

      5xx表示服务器错误
      500表示最常见的服务器错误
      503表示服务器暂时无法处理请求
    */






  </script>
</body>

</html>